<?php

namespace Rebecca\RebeccaBundle\Component;

use \Rebecca\RebeccaBundle\Entity\PeriodosLaboralesContratos;

require_once "ComponentBase.php";

/**
 * Description of TestComponent
 *
 * @author JeyDotC
 */
class PeriodosLaboralesComponent extends ComponentBase {

    function getAllTiposNominas() {
        return $this->em->getRepository("RebeccaBundle:TiposNomina")->findAll();
    }

    function getTipoNomina($id) {
        $Periodos = $this->em->getRepository("RebeccaBundle:Periodos")->findBy(array('idTipoNomina' => $id));
        $lista = array();

        foreach ($Periodos as $item) {
            $temp = $this->em->getRepository($this->entityName)->findBy(array('idPeriodo' => $item->getId()));

            if (count($temp) > 0)
                array_push ($lista, $temp[0]);
        }

        return $lista;
    }

    function getContratos($idTipoNomina) {
        return $this->em->getRepository("RebeccaBundle:Contratos")->findBy(
                        array(
                            'idTipoNomina' => $idTipoNomina
                ));
    }

    function addPeriodosLaboralesContratos($contratos, $idPeriodoLaboral) {
        $PeriodoLaboral = $this->get($idPeriodoLaboral);

        foreach ($contratos as $idContrato) {
            /* @var $contrato \Rebecca\RebeccaBundle\Entity\Contratos */
            $contrato = $this->em->getRepository("RebeccaBundle:Contratos")->find($idContrato);

            $periodoLaboralContrato = new PeriodosLaboralesContratos();

            $periodoLaboralContrato->setIdPeriodoLaboral($PeriodoLaboral);
            $periodoLaboralContrato->setIdContrato($contrato);
            $periodoLaboralContrato->setFuePagado(FALSE);

            $this->save($periodoLaboralContrato);

            $this->commit();

            $this->saveSalario($contrato, $periodoLaboralContrato);
        }
    }

    private function saveSalario($contrato, $periodoLaboralContrato) {
        $parametro = new \Rebecca\RebeccaBundle\Entity\ParamertrosRegistrados();

        $salario = $this->em->getRepository("RebeccaBundle:Parametros")->find(1);

        $parametro->setFormula($contrato->getSalarioBase());
        $parametro->setIdParametro($salario);
        $parametro->setIdPeriodosLaboralesContratos($periodoLaboralContrato);

        $this->save($parametro);
        $this->commit();
    }

}

?>